這題是高中排列組合方法數的數學題, 也是經典的Dynamic Programming。
將到目標的每個點設為小目標,而你單純走到最右邊或最下面的話,方法數皆為1,所以先將最邊邊設為1,接著只要將小目標中[能走到目標上的方法數 + 能走到目標左邊的方法數]即為走到此目標的方法數。 #高中數學好重要
class Solution {
public:
int uniquePaths(int m, int n) {
vector<vector<int>> dp(m, vector<int> (n, 1));
for(int i = 1; i < m; i++){
for(int j = 1; j < n; j++){
dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
}
}
return dp[m - 1][n - 1];
}
};